{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "icp.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "i9FdhJoKeV8d",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "t = np.arange(0,2,0.25)\n",
        "s = np.sin(t*np.pi)\n",
        "c = np.cos(t*np.pi + np.pi/2)\n",
        "\n",
        "a = np.array([10*t,10*s, np.zeros((8))])\n",
        "b = np.array([10*t,10*c, np.ones((8))])\n",
        "\n",
        "abar = a - np.average(a)\n",
        "bbar = b - np.average(b)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "x-yNI9NEeb-b",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 521
        },
        "outputId": "066f8918-4704-418a-93de-ee76b81c0089"
      },
      "source": [
        "plt.plot(a[0,:],a[1,:])\n",
        "plt.show()\n",
        "plt.plot(b[0,:],b[1,:])\n",
        "plt.show()"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nPPOM6AAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "MqvkH5bLfKMH",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def procrustes(a,b):\n",
        "    M = np.matmul(b,a.T)\n",
        "    print(M)\n",
        "    u,s,v = np.linalg.svd(M)\n",
        "    z = np.eye(a.shape[0])\n",
        "    z[-1,-1] = np.linalg.det(np.matmul(u,v))\n",
        "    r = np.matmul(np.matmul(u,z),v)\n",
        "    return r\n",
        "\n",
        "\n",
        "def correspondence(a,b):\n",
        "    cor = np.arange(b.shape[1])\n",
        "    for i , p in enumerate(b):\n",
        "        best = np.linalg.norm(p - b[cor[i]])\n",
        "        for j, q in enumerate(a):\n",
        "            dist = np.linalg.norm(p - q)\n",
        "            if dist < best:\n",
        "                cor[i] = j\n",
        "                best = dist\n",
        "    return cor\n",
        "\n",
        "\n",
        "def icp(a,b,iter = 1, plot = False):\n",
        "    a_ = a - np.average(a,axis=1)[:,np.newaxis]\n",
        "    b_ = b - np.average(b,axis=1)[:,np.newaxis]\n",
        "    r = np.eye(a.shape[0])\n",
        "    for i in range(iter):\n",
        "        cor = correspondence(a_,b_)\n",
        "        R = procrustes(a_[:,cor],b_)\n",
        "        r = np.dot(R,r)\n",
        "\n",
        "        b_ = np.dot(R,b_)\n",
        "\n",
        "        error = np.sum(np.linalg.norm(b_ - a_[:,cor], axis=0 )**2)\n",
        "\n",
        "        if plot:\n",
        "            print(i+1, cor, error)\n",
        "            t = np.average(a - np.dot(r,b), axis= 1)\n",
        "            btest = np.dot(r,b) + t[:,np.newaxis]\n",
        "            plt.plot(btest[0,:],btest[1,:])\n",
        "            plt.title(i)\n",
        "            plt.show()\n",
        "        \n",
        "    t = np.average(a - np.dot(r,b), axis= 1)\n",
        "    return r,t\n",
        "\n",
        "\n",
        "def icp2(a,b,plot = False):\n",
        "    a_ = a - np.average(a,axis=1)[:,np.newaxis]\n",
        "    b_ = b - np.average(b,axis=1)[:,np.newaxis]\n",
        "    r = np.eye(a.shape[0])\n",
        "    error = 1e6\n",
        "    threshold = 1e-6\n",
        "    i = 0\n",
        "    while (error >  threshold):\n",
        "        cor = correspondence(a_,b_)\n",
        "        R = procrustes(a_[:,cor],b_)\n",
        "        r = np.dot(R,r)\n",
        "\n",
        "        b_ = np.dot(R,b_)\n",
        "        error = np.sum(np.linalg.norm(b_ - a_[:,cor], axis=0 ))\n",
        "\n",
        "        if plot:\n",
        "            print(i+1, cor, error)\n",
        "            t = np.average(a - np.dot(r,b), axis= 1)\n",
        "            btest = np.dot(r,b) + t[:,np.newaxis]\n",
        "            plt.plot(btest[0,:],btest[1,:])\n",
        "            plt.title(i)\n",
        "            plt.show()\n",
        "        i += 1\n",
        "        \n",
        "    t = np.average(a - np.dot(r,b), axis= 1)\n",
        "    return r,t"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "XpzrzNkl9ULv",
        "colab_type": "code",
        "outputId": "d2cae1dd-1d9f-4a0a-f829-61bbe75a317a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 657
        }
      },
      "source": [
        "r, t = icp2(a,b)\n",
        "print(r , t)\n",
        "print(np.linalg.det(r))\n",
        "print('final')\n",
        "btest = np.dot(r,b) + t[:,np.newaxis]\n",
        "plt.plot(btest[0,:],btest[1,:])\n",
        "plt.show()\n",
        "\n",
        "plt.plot(a[0,:],a[1,:])\n",
        "plt.show()"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "[[ 262.5        -241.42135624    0.        ]\n",
            " [ 241.42135624 -400.            0.        ]\n",
            " [   0.            0.            0.        ]]\n",
            "[[ 1.00000000e+00 -3.13053586e-16  0.00000000e+00]\n",
            " [-1.75514434e-16 -1.00000000e+00  0.00000000e+00]\n",
            " [ 0.00000000e+00  0.00000000e+00 -1.00000000e+00]] [1.66533454e-16 1.21859376e-15 1.00000000e+00]\n",
            "0.9999999999999998\n",
            "final\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nPPOM6AAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nPPOM6AAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    }
  ]
}